\chapter{QUADRO TEÓRICO}

\par Neste capítulo serão listados os conceitos e as tecnologias que serão
utilizados no desenvolvimento da proposta de trabalho apontada na seção 
objetivos. Para tal, serão discutidos a definição, o histórico e as 
aplicabilidades de cada um deles, tomando por base autores fundantes e 
seus comentaristas.

\section{Algoritmos Genéticos}

\par De acordo com \citeonline{livro_ags_ricardo_linden}, os Algoritmos
genéticos - AGs\footnotemark[1] - são baseados na teoria da evolução, proposta
pelo naturalista inglês Charles Darwin por volta de 1850, quando este, em uma viagem de navio
visitou vários lugares e, por ser uma pessoa com uma grande habilidade de 
observação, percebeu que indivíduos de uma mesma espécie vivendo em lugares
diferentes possuíam também características distintas, ou seja, cada indivíduo 
possuía atributos específicos que lhe permitia uma melhor adaptação em seu
ecossistema. 

\footnotetext[1]{O termo algoritmos genéticos será referenciado pela sigla AGs
a partir deste ponto do trabalho.}

\par  Com base nesta observação, Darwin então propôs que existe um processo de
seleção natural, afirmando que, como os recursos na natureza, tais como água e comida,
são limitados, os indivíduos competem entre si e aqueles que não possuem atributos necessários
à adaptação ao seu ambiente tendem a ter uma probabilidade menor de reprodução e
irão ser extintos ao longo do tempo, e por outro lado, aqueles
com característas que os permitem obter vantagens competitivas no meio onde
vivem acabam tendo mais chances de sobreviver e gerar indivíduos ainda mais
adaptados. A teoria ressalta porém que, o processo não tem o objetivo de maximizar
algumas características das espécies, pois  os novos indivíduos
possuem atributos que são resultados da mesclagem das características dos reprodutores,
o que faz com que os filhos não sejam exatamente iguais aos pais, podendo assim
ser superiores, uma vez que, estes herdem as qualidades de seus pais ou
inferiores se os descendentes herdarem as partes ruins de seus
reprodutores. Este processo de transferência de informação será explicado
posteriormente.\cite{livro_ags_ricardo_linden}

\par Para entender a relação entre AGs e a evolução natural é
necessário conhecer as principais terminologias biológicas, 
sendo importante ressaltar porém que, de acordo com
\citeonline{livro_introduction_ag_melaine_mitchell}, apesar da 
analogia a certos termos da biologia, a forma com que os AGs 
são implementados é relativamente simples se comparado ao funcionamento
biológico real.

\par \citeonline{livro_introduction_ag_melaine_mitchell} afirma que 
todos os seres vivos são compostos de células e estas possuem um ou mais
cromossomos que, basicamente, são manuais de instruções que definem as 
características do organismo. O cromossomo é formado por um conjunto de genes
que, em grupo ou individualmente, são responsáveis por um determinado atributo
do indivíduo como por exemplo, a cor do cabelo, a altura e etc. Cada gene possui
uma localização dentro do cromossomo denominada locus e, por fim, o conjunto de
todos os cromossomos dentro da célula é definido como genoma. 

\par De acordo com \citeonline{livro_ags_ricardo_linden}, em suma o conjunto
completo de todo o material genético é o genoma e considerando isto, o autor
afirma,

\begin{citacao}
“Um conjunto específico de genes no genoma é chamado de genótipo. O
genótipo é a base do fenótipo, que é a expressão das características
físicas e mentais codificadas pelos genes e modificadas pelo ambiente,
tais como cor dos olhos, inteligência etc. Daí, podemos concluir: nosso
DNA codifica toda a informação necessária para nos descrever, mas esta
informação está sob controle de uma grande rede de regulação gênica
que, associada às condições ambientais, gera as proteínas na quantidade
certa, que farão de nós tudo aquilo que efetivamente
somos".\cite[p.33]{livro_ags_ricardo_linden}
\end{citacao}  

\par Uma vez descrita a complexidade dos organismos é necessário, antes
de descrever a relação entre a biologia e os algoritmos genéticos, discorrer,
de forma básica, sobre o processo de reprodução responsável pela
transmissão da informação genética de geração para geração.
Este processo justifica o fato de os filhos serem ligeiramente diferente
de seus pais como foi descrito anteriormente.\cite{livro_ags_ricardo_linden}

\par Para \citeonline{livro_ags_ricardo_linden}, existem dois tipos de
reprodução a assexuada que não é necessário a presença de um parceiro
e a sexuada que exige a presença de dois organismos. Será descrito o
funcionamento da reprodução sexuada, uma vez que a relação dos AGs com 
a reprodução é baseada na mesma.

\par Na reprodução sexuada ocorre um processo chamado crossover que são
realizados pelos cromossomos e acontece por meio da duplicação destes.
Após a duplicação é criado então dois novos cromossomo a partir de um pedaço
dos dois primeiros o que irá resultar em 4 cromossomos potencialmente
diferentes que são depositados em um material chamado gametas e este 
é fornecido por cada projenitor. Este processo é denominado crossover 
porque acontece um cruzamento estre os cromossomos para a realização da
operação. Ainda no processo de reprodução pode ocorrer mutações que são 
mudanças dentro do código genético que podem ser causadas por fatores
aleatórios como a presença de radiação e isso pode vim a ser uma vantagem
ou uma desvantagem ao indivído.\cite{livro_ags_ricardo_linden}

\par Fazendo uma associação de tudo que foi visto com algoritmos genéticos, 
de acordo com \citeonline{livro_introduction_ag_melaine_mitchell}, em AGs, 
o termo cromossomo representa uma solução candidata para um problema a ser
resolvido, os genes são representados, geralmente, por um série de ítens desta
solução e os alelos são os possíveis valores que estes ítens podem receber. O 
processo de crossover consiste em trocar valores entre duas ou mais soluções
disponíveis e a mutação em alterar um determinado valor de algum ítem
aleatóriamente, para que assim depois de todo o processo possa ser criadas
novas soluções que possam ser melhores que as anteriores para a resolução 
do problema em questão.




% \par    Desta forma surge a necessidade de primeiramente descrever os
% princípios da teoria proposta por Darwin para que se possa ter um melhor
% entendimento do contexto de computação evolucionária e de algoritmos genéticos.
% É importante, porém, ressaltar que o conteúdo desta sessão não tem como
% objetivo levantar questões sobre o tema da origem dos seres vivos. 
% 	
% \par	O autor afirma ainda que o trabalho de Darwin iniciou-se p
% Esta observação foi o ponto chave que levou o inglês a criar a teoria da evolução. 
% 	
% \par 	Ainda segundo Linden, a teoria afirma que,  

% \par algoritmos genéticos são um ramo de uma das abordagens da inteligência
% artificial denominada abordagem evolutiva. Segundo Lacerda e Carvalho o termo,
% proposto inicialmente por John Holland em 1975 e popularizado através de seu aluno Goldberg
% em 1989, está fundamentado no princípio de seleção natural proposto por Charles Darwin em seu
% livro A Origem das Espécie.
% 
% \par Darwin (1859) propôs que os indivíduos mais fortes evoluem através do processo de
% seleção natural, que define que o indivíduos com melhor capacidade de adaptação ao seu
% ambiente possuem maior chance de sobreviver e gerar descendentes. Algoritmos genéticos
% seguem este mesmo conceito, pois, segundo \citeonline{livro_ags_ricardo_linden},
% são um ramo de um modelo computacional conhecido como algoritmos evolucionários e como tal definem­se como uma
% técnica de otimização e busca que se baseia na teoria do processo de evolução
% natural. \citeonline {livro_ags_ricardo_linden} afirma,
% 
% \begin{citacao}
% “Algoritmos evolucionários funcionam mantendo uma população de estruturas,
% denominadas indivíduos ou cromossomos que se comportam de forma semelhante a
% evolução das espécies. A estas estruturas são aplicados os chamados operadores
% genéticos, como recombinação, mutação, entre outros. Cada indivíduo recebe uma 
% avaliação que é uma quantificaçâo da sua qualidade como solução do problema em
% questão. Com base nesta avaliação serão aplicados os operadores genéticos de forma
% a simular a sobrevivência do mais apto”.\cite[p. 16]{livro_ags_ricardo_linden}
% \end{citacao} 
% 
% \par Técnicas de busca e otimização se destacam pois melhores soluções para um
% problema impacta, muitas vezes, em economia de recursos e neste contexto AGs 
% desempenham um papel importante, pois, como afirma
% \citeonline{nocoes_geriais_anita_fernandes}, “apesar de não garantir que os AGs
% encontrem a solução ótima do problema, existem evidências empíricas de que
% respostas aceitáveis podem ser obtidas em um tempo bastante razoável”.

\section{Tecnologias}

\subsection{Java}

\par Segundo \citeonline{oracle}, a Linguagem Java foi projetada
para permitir o desenvolvimento de aplicações seguras, portáteis
e de alto desempenho para a mais ampla gama de plataformas de computação.

\par De acordo com \citeonline{livro_java_complete_references}, o Java foi
criado em 1991 pela Sun Microsystems e foi baseado em uma linguagem já
existente, o C++, que foi escolhida por ser orientada a objetos e
por gerar códigos pequenos, o que era exatamente o que eles precisavam para
implantar em pequenos aparelhos. Além dessas características um requisito
desejável era que a nova linguagem fosse independente de plataforma, para que
fosse executado em qualquer arquitetura, tais como, TVs, telefones, entre
outros, e então, para atender esta exigência, foi
criado o conceito de máquina virtual, que ficou conhecido como Java
Virtual Machine - JVM\footnotemark[2].

\footnotetext[2]{O termo Java Virtual Machine será referenciado pela sigla JVM a
partir deste ponto do trabalho.}

\par A chave que
permite o Java resolver o problema de portabilidade é o fato de o código ser
complicado em Bytecode que é um conjunto genérico de instruções altamente
otimizado que é executado pela JVM e esta, por sua vez, traduz o mesmo para a
arquitetura a qual ela está instalada o que possibilita a execução do programa
em várias plataformas pois somente a JVM precisa ser interpretada em cada
sistema operacional. \cite{livro_java_complete_references}, 
%Ver este contexto resolvendo assim também problemas associados com programas baseados na web. 


% 
% \par Hoje os Browsers que possuem JVM embutida podem executar programas que 
% utilizam a linguagem JAVA. 
% 
% Neste particular Quinteiro (2006) registrou que:
% 
% \begin{citacao}
% “A Sun considera o sucesso do Java na Internet como sendo o primeiro passo para utilizá-lo em decodificadores da 
% televisão interativa, em dispositivos portáteis e outros produtos eletrônicos de consumo - exatamente como o Java 
% tinha começado em 1991. Sua natureza portátil e o projeto robusto permitem o desenvolvimento para múltiplas 
% plataformas, em ambientes tão exigentes como os da eletrônica de consumo".\cite[p.33]{livro_ags_ricardo_linden}
% \end{citacao}  


\par Além da portabilidade o Java também é Multithread, ou seja, permite a
execução de múltiplas tarefas, tem um automatic garbage collector, um mecanismo
de gerenciamento de memória que a Java Virtual Machine (JVM) acomoda. Suporta
uma extensa biblioteca de rotinas que facilitam a interação com protocolos
TCP/IP, como HTTP e FTP, além de possuir uma segurança em sua execução por
controlar programas via rede com restrições.

%De acordo com Jundl Junior (2007, p. 22), 

\par Atualmente a linguagem está organizada em três segmentos principais: 

 \begin{itemize}

	\item JavaMe (Java Micro Edition)- Destinado a pequenos dispositivos computacionais móveis, tais como celulares, 
PDAs e set-top boxes. É composto de máquina virtuais otimizadas para ambientes mais restritos, especificações de 
funcionalidades e uma API mais compacta; 
	  
	\item JavaSE (Java Standard Edition)- Integra os elementos padrão da plataforma e permite o desenvolvimento de 
aplicações de pequeno e médio porte. Inclui todas as APIs consideradas de base,
além da máquina virtual padrão;

	\item JavaEE (Java Enterprise Edition)- Voltada para o desenvolvimento de aplicações corporativas 
complexas. Adiciona APIs especificas aos elementos padrão da plataforma.
	
 \end{itemize}


\subsection{Java Server Faces}

\par O JavaServer Faces (JSF) é uma especificação para um framework de
componentes para desenvolvimento web em Java de forma segura além de ser padrão
no mercado e foi definido pela Java Comunity Process(JCP), que é uma entidade
cuja objetivo é especificar a evolução do Java.

\par Como o JSF é uma especificação da JCP, grandes empresas como Apache, IBM,
Oracle entre outras, participaram da definição do JSF e aprovaram sua
especificação e mesmo sendo idealizado por várias empresas e generalizado pela
JCP, o JSF não é um produto acabado e precisa de implementações.

\par As implementações mais conhecidas são:

 \begin{itemize}
	\item Sun Mojarra (antes JSF R1) – implementação de referencia	(http://javaserverfaces.java.net/)
	
	\item MyFaces da apache(http://myfaces.apache.org/)
 \end{itemize}

\par Com essa implementação é possível utilizar todos os recursos do padrão JSF,
como formulários, tabelas, layout, conversão e validação de eventos, além de
toda a inteligência para a interpretação dos arquivos de configuração e
interação com o contêiner Java.

\par Como o JSF é um padrão de mercado, várias empresas investem no
desenvolvimento de componentes como, Calendário, ProgressBar, menus, efeitos de
transição entre outros.

 \par Algumas das principais bibliotecas de componentes são:

 \begin{itemize}
	\item Trinidad, da apache MyFaces (http://myfaces.apache.org/trinidad/);
	
	\item Tobago, da apache MyFaces (http://myfaces.apache.org/tobago/);
	
	\item ICEFaces, da ICESoft (http://www.icefaces.org/);
	
	\item RichFaces, da JBoss (http://www.jboss.org/richfaces/);
	
	\item Tomahawk, da apache MyFaces (http://myfaces.apache.org/tomahawk/);
	
	\item PrimeFaces (http://www.primefaces.org/)
 \end{itemize}



%\subsection{Tomcat}

%\par Segundo a Apache (2015), o Tomcat é um software livre que realiza a
%implementação de especificações do Java voltado para programação para 
%internet lançado pela própria Apache.
% \par Exemplo de parágrafo utilizando comando para formatar em itálico as palavras em inglês, como por exemplo: \textit{pets, animals and software} e um exemplo de texto em negrigo: \textbf{grafo}.
% 
% \par Um tipo de citação: segundo \citeonline{correa2003plantas} as plantas \ldots.
% 
% \par Outro tipo de citação: as plantas \ldots \cite{correa2003plantas}.
% 
% \par Outro tipo de citação com página: \cite[p. 13]{correa2003plantas}.
% \par Outro tipo ainda de citação com página:  \citeonline[p. 13]{correa2003plantas}.
% 
% \par Para referenciar seções e capítulos, é necessário colocar o \textbackslash label e a referência assim: na \autoref{sec:materiais} e no \autoref{cap:quadroMetodologico} são encontradas as informações\ldots
% 
% \par Exemplo de equação:
% 
% \begin{equation}
%  \Delta Q = 
%  \left[
%  \frac{\sum_{in} + k_{i,in}}{2m} - 
%  \left(
%  \frac{\sum_{tot} + k_i}{2m}
%  \right)^2
%  \right] -
%  \left[
%  \frac{\sum_{in}}{2m} - 
%  \left(\frac{\sum_{tot}}{2m}
%  \right)^2 - 
%  \left(\frac{k_i}{2m}
%  \right)^2
%  \right]
% \end{equation}
% 
% 
% \par Símbolos matemáticos só funcionam dentro do ambiente \texttt{equation} ou entre dois símbolos \$. Ex: Adiciona cada vértice $w \in N_d(v) \Delta \Gamma$ na região, os quais foram vistos por pelo menos a uma fração $\gamma$ dos vértices em $N_d(v)$.
% 
% \par Outra fórmula: $y=x^2$
% 
% \section{Materiais}
% \label{sec:materiais}
% 
% \par Este parágrafo mostra um exemplo de um teste de nota de rodapé, utilizando o texto do documento da Univas\footnote{O nome “Desenvolvimento” é muito vago, portanto, não o utilize; prefira, de acordo com a situação, ``Fundamentação teórica'', ``Análise dos dados'', ``Objetivos'', ``Metodologia'', etc. }. Outro tipo de nota de rodapé\footnote{\cite{correa2003plantas}}.  Outro tipo ainda de nota de rodapé\footnote{\citeonline{correa2003plantas}}
% 
% 
% \par Um exemplo de tabela é mostrado na Tabela~\ref{tab:informativa}
% 
% 
% \begin{table} [h]
%   \caption[Informação nutricioal dos alimentos]
%           {Informação nutricioal dos alimentos \textbf{Fonte:} \cite{correa2003plantas}}
%   \centering
%   \begin{tabular}{|p{0.7in}|p{2in}|p{3in}|}
%     \hline 
%     \multicolumn{1}{|c|}{\textbf{Hortaliça}} & \multicolumn{1}{c|}{\textbf{Valor Nutricional}} & \multicolumn{1}{c|}{\textbf{Propriedades medicinais}} \\
%     \hline 
% Tomate
% &Vitamina A, C, E e ferro, potássio
% &Maior resistência aos vasos sanguíneos, combate a infecções\\
%     \hline 
% Cenoura
% &Vitamina A, vitaminas do complexo B, cálcio, fósforo
% &Regula o aparelho digestivo, purifica a bile e fortalece a pele\\
%     \hline
% Cebolinha
% &Cálcio, ferro, niacina
% &Estimula o apetite, ajuda na formação de ossos e dentes\\
% 
%     \hline
% Alface
% &Ferro, cálcio, niacina, vita\-mina C
% &Combate insônia, ajuda na cicatrização dos tecidos\\
% 
%     \hline
% Rúcula
% &Iodo, vitaminas A e C
% &Combate a fadiga, depura o sangue\\
% 
%     \hline
% Erva cidreira
% &Sais minerais
% &Tonico nervoso, combate cólicas intestinais\\
% 
%     \hline 
%   \end{tabular}
%   \legend{Fonte: \cite{correa2003plantas}}
%   \label{tab:informativa}
% \end{table}
% 
% \par A seguir segue exemplo de listagem numérica:
% 
% \begin{enumerate}
%   \item conteúdo do item 1;
%   \item conteúdo do item 2;
%   \item conteúdo do item 3;
%   \item conteúdo do item 4;
%   \item conteúdo do item 5;
%   \item conteúdo do item 6;
%   \item etc.
% \end{enumerate}
% 
% \par Também é possível fazer a lista de itens:
% 
% \begin{itemize}
%   \item conteúdo do primeiro item;
%   \item conteúdo do segundo item;
%   \item conteúdo do terceiro item;
%   \item conteúdo do quarto item;
%   \item conteúdo do quinto item;
%   \item etc.
% \end{itemize}
% 
% \par Um exemplo de imagem é mostrado na Figura~\ref{fig:exemplo1}.
% 
% \begin{figure}[h!]
%   \centerline{\includegraphics[scale=0.65]{./imagens/apendice_img1.png}}
%   \caption[Exemplo de criação de um projeto Web no Eclipse]
%           {Exemplo de criação de um projeto Web no Eclipse. \textbf{Fonte:} \cite{correa2003plantas}}
% \label{fig:exemplo1}
% \end{figure}
% 
% \par Perceba que o \LaTeX~faz a numeração automática das figuras e já adiciona na lista de figuras.
% 
% \par Agora a mesma imagem foi incluída, porém em escala menhor, conforme ilustra a Figura~\ref{fig:exemplo2}.:
% 
% \begin{figure}[h!]
%   \centerline{\includegraphics[scale=0.25]{./imagens/apendice_img1.png}}
%   \caption[Mesma imagem em escala menor]
%           {Mesma imagem em escala menor. \textbf{Fonte:} \cite{correa2003plantas}}
% \label{fig:exemplo2}
%\end{figure}